package org.misalen.web.service.pay.alipay;

import java.util.HashMap;

import org.springframework.util.Assert;

import net.sf.json.JSONObject;

public class AliPayParam extends HashMap<String, String> {
	public AliPayParam() {
		super.put("product_code", "QUICK_MSECURITY_PAY");
		super.put("timeout_express", "30m");
	}

	/**
	 * 获取订单总金额，单位为元
	 * 
	 * @return totalAmount 订单总金额，单位为元
	 */
	public String getTotalAmount() {
		return get("total_amount");
	}

	/**
	 * 设置订单总金额，单位为元
	 * 
	 * @param totalAmount
	 *            订单总金额，单位为元
	 */
	public void setTotalAmount(String totalAmount) {
		super.put("total_amount", totalAmount);
	}

	/**
	 * 获取商品的标题
	 * 
	 * @return subject 商品的标题
	 */
	public String getSubject() {
		return get("subject");
	}

	/**
	 * 设置商品的标题
	 * 
	 * @param subject
	 *            商品的标题
	 */
	public void setSubject(String subject) {
		super.put("subject", subject);
	}

	/**
	 * 获取对一笔交易的具体描述信息
	 * 
	 * @return body 对一笔交易的具体描述信息
	 */
	public String getBody() {
		return get("body");
	}

	/**
	 * 设置对一笔交易的具体描述信息
	 * 
	 * @param body
	 *            对一笔交易的具体描述信息
	 */
	public void setBody(String body) {
		super.put("body", body);
	}

	/**
	 * 获取商户网站唯一订单号
	 * 
	 * @return outTradeNo 商户网站唯一订单号
	 */
	public String getOutTradeNo() {
		return get("out_trade_no");
	}

	/**
	 * 设置商户网站唯一订单号
	 * 
	 * @param outTradeNo
	 *            商户网站唯一订单号
	 */
	public void setOutTradeNo(String outTradeNo) {
		super.put("out_trade_no", outTradeNo);
	}

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public String put(String key, String value) {
		return null;
	}

//	public static void main(String[] args) {
//		System.err.println(new AliPayParam().toJson().toString());
//	}

	public JSONObject toJson() {
		Assert.notNull(getBody());
		Assert.notNull(getOutTradeNo());
		Assert.notNull(getTotalAmount());
		Assert.notNull(getSubject());
		return JSONObject.fromObject(this);
	}

	@Override
	public String toString() {
		return toJson().toString();
	}
}
